/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tecprog.beans;

import javax.faces.bean.ManagedBean;
import tecprog.model.*;
import tecprog.model.exceptions.NonexistentEntityException;
import tecprog.model.exceptions.PreexistingEntityException;
import tecprog.service.TipoAlunoService;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import javax.faces.bean.SessionScoped;
import java.util.logging.Logger;

/**
 *
 * @author Igor
 * 
 * alterações Breno
 */
@ManagedBean(name="alunoBean")
@SessionScoped
public class AlunoBean implements Serializable{

    private static final Logger log = Logger.getLogger(AlunoBean.class.getName());
    
    
    private List<Aluno> alunos;
    
    private Aluno aluno;
    
    private TipoAlunoService service;
  
    /** Cria uma nova estancia de Alunobean */
    public AlunoBean() {
        service = new TipoAlunoService();
        atualizarTiposAluno();
    }
    
    public Aluno getAluno() {
        return aluno;
    }

    public void setAluno(Aluno aluno) {
          log.info("Compara alunos");
        this.aluno = aluno;
    }

    public List<Aluno> getAlunos() {
        return alunos;
    }

    public void setAlunos(List<Aluno> alunos) {
        this.alunos = alunos;
    }
    
    public void criar() throws PreexistingEntityException, Exception {
        setAluno(new Aluno());
    }
    
    /**
     * Salva determinada linha de aluno
     * @throws PreexistingEntityException
     * @throws Exception 
     */
    public void salvar() throws PreexistingEntityException, Exception {
        service.salvar(aluno);
        log.info("Salva a informação.");
        atualizarTiposAluno();
        
    }
    
    /**
     * Cancela operaçao
     */
    public void cancelar() {
       log.info("Operação cancelada.");
        atualizarTiposAluno();
        //botaoNovo = true;
        //botaoExcluir = true;
        
    }
    
    /**
     * Exclui determinada linha de aluno
     * @throws NonexistentEntityException 
     */
    public void excluir() throws NonexistentEntityException {
        service.excluir(aluno);
     log.info("Operação de exclusão.");
        atualizarTiposAluno();
    }

    /**
     * Atualiza a lista de alunos.
     */
    private void atualizarTiposAluno() {
        alunos = service.recarregar();
        //Collections.sort(alunos    );                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       );
        aluno = alunos.get(0);
    }
    
    /**
     * Pesquisa determinado aluno
     * @return 
     */
    public Aluno pesquisar(){
        return service.efetuarPesquisa(aluno.getAssuntolidosnosjornais());
    }
}
